﻿using System;
using Harvest.API.Attributes;

namespace Harvest.API.Model
{
    [SerializationInfo("user")]
    public class User
    {

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<cache-version type="integer">699</cache-version>]]>
        /// </example>
        [SerializationInfo("cache-version", "integer")]
        public int? CacheVersion { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<created-at type="datetime">2009-04-08T06:23:22Z</created-at>]]>
        /// </example>
        [SerializationInfo("created-at", "datetime")]
        public DateTime? CreatedAt { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<default-expense-category-id type="integer">185632</default-expense-category-id>]]>
        /// </example>
        [SerializationInfo("default-expense-category", "integer")]
        public int? DefaultExpenseCategory { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<default-expense-project-id type="integer">339448</default-expense-project-id>]]>
        /// </example>
        [SerializationInfo("default-expense-project-id", "integer")]
        public int? DefaultExpenseProjectId { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<default-hourly-rate type="decimal" nil="true"></default-hourly-rate>]]>
        /// </example>
        [SerializationInfo("default-hourly-rate", "decimal", IsNullable = true)]
        public float? DefaultHourlyRate { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<default-task-id type="integer">279635</default-task-id>]]>
        /// </example>
        [SerializationInfo("default-task-id", "integer")]
        public int? DefaultTaskId { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<default-time-project-id type="integer">339448</default-time-project-id>]]>
        /// </example>
        [SerializationInfo("default-time-project-id", "integer")]
        public int? DefaultTimeProjectId { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<department nil="true"></department>]]>
        /// </example>
        [SerializationInfo("department", IsNullable = true)]
        public string Department { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<duplicate-timesheet-wants-notes type="boolean">true</duplicate-timesheet-wants-notes>]]>
        /// </example>
        [SerializationInfo("duplicate-timesheet-wants-notes", "boolean")]
        public bool? DuplicateTimesheetWantsNotes { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<email>thommy@mewes.org</email>]]>
        /// </example>
        [SerializationInfo("email")]
        public string Email { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<email-after-submit type="boolean">true</email-after-submit>]]>
        /// </example>
        [SerializationInfo("email-after-submit", "boolean")]
        public bool? EmailAfterSubmit { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<first-name>Thommy</first-name>]]>
        /// </example>
        [SerializationInfo("first-name")]
        public string FirstName { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<has-access-to-all-future-projects type="boolean">false</has-access-to-all-future-projects>]]>
        /// </example>
        [SerializationInfo("has-access-to-all-future-projects", "boolean")]
        public bool? HasAccessToAllFutureProjects { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<id type="integer">74045</id>]]>
        /// </example>
        [SerializationInfo("id", "integer", IsNullable = true)]
        public int? Id { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<identity-url nil="true"></identity-url>]]>
        /// </example>
        [SerializationInfo("identity-url", IsNullable = true)]
        public string IdentityUrl { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<is-active type="boolean">true</is-active>]]>
        /// </example>
        [SerializationInfo("is-active", "boolean")]
        public bool? IsActive { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<is-admin type="boolean">true</is-admin>]]>
        /// </example>
        [SerializationInfo("is-admin", "boolean")]
        public bool? IsAdmin { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<is-contractor type="boolean">false</is-contractor>]]>
        /// </example>
        [SerializationInfo("is-contractor", "boolean")]
        public bool? IsContractor { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<last-name>Mewes</last-name>]]>
        /// </example>
        [SerializationInfo("last-name")]
        public string LastName { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<preferred-approval-screen>timeframe</preferred-approval-screen>]]>
        /// </example>
        [SerializationInfo("preferred-approval-screen")]
        public string PreferredApprovalScreen { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<preferred-entry-method>daily</preferred-entry-method>]]>
        /// </example>
        [SerializationInfo("preferred-entry-method")]
        public string PreferredEntryMethod { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<preferred-project-status-reports-screen>active</preferred-project-status-reports-screen>]]>
        /// </example>
        [SerializationInfo("preferred-project-status-reports-screen")]
        public string PreferredProjectStatusReportsScreen { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<telephone></telephone>]]>
        /// </example>
        [SerializationInfo("telephone")]
        public string Telephone { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<timesheet-duplicated-at type="date" nil="true"></timesheet-duplicated-at>]]>
        /// </example>
        [SerializationInfo("timesheet-duplicated-at", "datetime", IsNullable = true)]
        public DateTime? TimesheetDuplicatedAt { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<timezone>Berlin</timezone>]]>
        /// </example>
        [SerializationInfo("timezone")]
        public string Timezone { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<twitter-username></twitter-username>]]>
        /// </example>
        [SerializationInfo("twitter-username")]
        public string TwitterUsername { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<wants-newsletter type="boolean">true</wants-newsletter>]]>
        /// </example>
        [SerializationInfo("wants-newsletter", "boolean")]
        public bool? WantNewsletter { get; set; }

    }

}
